package com.wzy.domain.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.wzy.annotation.Xss;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Null;
import java.io.Serializable;
import java.util.Date;

/**
 * 评论表
 *
 * @TableName wzy_comment
 */
@TableName(value = "wzy_comment")
@Data
@EqualsAndHashCode
public class Comment implements Serializable
{
    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    private Long id;
    /**
     * 评论类型（0代表文章评论，1代表友链评论）
     */
    @NotBlank(message = "评论失败")
    private String type;
    /**
     * 文章id
     */
    private Long articleId;
    /**
     * 根评论id
     */
    private Long rootId;
    /**
     * 评论内容
     */
    @Xss(message = "评论内容不能包含脚本字符")
    @Length(min = 1, max = 340, message = "评论内容过长")
    @NotBlank(message = "评论内容不能为空")
    private String content;
    /**
     * 过滤敏感词后的评论内容
     */
    @Xss(message = "评论内容不能包含脚本字符")
    @Null
    private String filterContent;
    /**
     * 所回复的目标评论的 userId
     */
    private Long toCommentUserId;
    /**
     * 回复目标评论id
     */
    private Long toCommentId;
    /**
     * 创建人的用户id
     */
    private Long createBy;
    /**
     * 创建人的昵称
     */
    private String createNick;
    /**
     * 创建人的头像
     */
    private String avatarUrl;
    /**
     * 评论标签 (0-普通评论，1-置顶评论)
     */
    private String label;
    /**
     * 评论状态 0-未精选，1-精选评论
     */
    private String commentStatus;
    /**
     * 发布时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date createTime;
    /**
     * 更新人
     */
    private Long updateBy;
    /**
     * 最后编辑时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date updateTime;
    /**
     * 删除标志（0代表未删除，1代表已删除）
     */
    private Integer delFlag;

    @Override
    public String toString()
    {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", id=").append(id);
        sb.append(", type=").append(type);
        sb.append(", articleId=").append(articleId);
        sb.append(", rootId=").append(rootId);
        sb.append(", content=").append(content);
        sb.append(", filterContent=").append(filterContent);
        sb.append(", toCommentUserId=").append(toCommentUserId);
        sb.append(", toCommentId=").append(toCommentId);
        sb.append(", createBy=").append(createBy);
        sb.append(", createNick=").append(createNick);
        sb.append(", avatarUrl=").append(avatarUrl);
        sb.append(", label=").append(label);
        sb.append(", createTime=").append(createTime);
        sb.append(", updateBy=").append(updateBy);
        sb.append(", updateTime=").append(updateTime);
        sb.append(", delFlag=").append(delFlag);
        sb.append(", serialVersionUID=").append(serialVersionUID);
        sb.append("]");
        return sb.toString();
    }
}